#include<stdio.h>
#include<stdlib.h>

#define MaxSize 100;
typedef char ElementType;
typedef int position;
typedef struct{
  ElementType data[100];
  position top;
}SqStack;
void InitStack(SqStack *&s);
void DestroyStack(SqStack *&s);
bool StackEmpty(SqStack *s);
bool Push(SqStack *&s,ElementType a);
bool Pop(SqStack *s,ElementType &e);
bool GetTop(SqStack *s,char &c);
int main()
{
  int i=0,j=0;
  char e,c,c0,e0;
  char a[100],b[100];
  SqStack *s;
  a[0]=getchar();
  while(1)
  {
    a[i+1]=getchar();
    if((a[i+1]=='\n'||a[i+1]=='.')&&a[i]=='\n')
    break;
    if(a[i]=='{'||a[i]=='}'||a[i]=='('||a[i]==')'||a[i]=='['||a[i]==']');
    {
      b[j]=a[i];
      j++;
    }
    if((a[i]=='/'&&a[i+1]=='*')||(a[i]=='*'&&a[i+1]=='/'))
    {
      b[j]=a[i];
      b[j+1]=a[i+1];
      i++;
      j=j+2;
    }
    i++;
  }
  //i++;
  InitStack(s);
  for(i=0;i<=j;i++)
  {
    Push(s,b[i]);
  }
  for(i=0;i<j;i++)
  {
   Pop(s,e); 
   GetTop(s,c);
   if(c=='/')
    {
     Pop(s,e0);
     i++;
     GetTop(s,c0);
     //if(c0=='*')
     //{
       if(e0=='*')
       {
       	i=i+2;
       	Pop(s,e);
       	Pop(s,e);
       } 
       else
      {
        printf("/*-?\n");
        printf("no\n");
        return 0;
      }
    // }
    }
    else if(c=='*')
    {
    	i++;
     Pop(s,e0);
     GetTop(s,c0);
    // if(c0=='/')
    // {
       if(e0=='/')
       {
       	i=i+2;
       	Pop(s,e);
       	Pop(s,e);
       }
       else
      {
        printf("?-*/\n");
        printf("no\n");
        return 0;
      }
    // }
    }
    else if(c=='{')
    {
     if(e=='}')
     {
     	Pop(s,e);
     	i++;
     }
     
     else
     {
       printf("{-?");
       printf("no\n");
       return 0;
     }
    }
    else if(c=='}')
    {
     if(e=='{')
     {
     	Pop(s,e);
     	i++;
     }
     
     else
     {
       printf("?-}");
       printf("no\n");
       return 0;
     }
    }
    else if(c=='[')
    {
     if(e==']')
     {
     	Pop(s,e);
     	i++;
     }
    // Pop(s,e);
     else
     {
       printf("[-?");
       printf("no\n");
       return 0;
     }
    }
    else if(c==']')
    {
     if(e=='[')
     {
     	Pop(s,e);
     	i++;
     }
     //Pop(s,e);
     else
     {
       printf("?-]");
       printf("no\n");
       return 0;
     }
    }
    else if(c=='(')
    {
     if(e==')')
     {
     	Pop(s,e);
     	i++;
     }
     //Pop(s,e);
     else
     {
       printf("(-?");
       printf("no\n");
       return 0;
     }
    }
    else if(c==')')
    {
     if(e=='(')
     {
     	Pop(s,e);
     	i++;
     }
    // Pop(s,e);
     else
     {
       printf("?-)");
       printf("no\n");
       return 0;
     }
    }
  }
  if(s->top==-1)
  printf("yes\n");
  return 0;
}
void InitStack(SqStack * &s)
{
  s=(SqStack *)malloc(sizeof(SqStack));
  s->top=-1;
}
void DestroyStack(SqStack *&s)
{
  free(s);
}
bool StackEmpty(SqStack *s)
{
  return (s->top==-1);
}
bool Push(SqStack *&s,ElementType a)
{
  if(s->top==99)
  return false;
    s->top++;
    s->data[s->top]=a;
  return true;
}
bool Pop(SqStack *s,ElementType &e)
{
  if(s->top==-1)
  return false;
  e=s->data[s->top];
  s->top--;
  return true;
}
bool GetTop(SqStack *s,char &c)
{
  if(s->top=-1)
  {
    return false;
  }
  c=s->data[s->top];
  return true;
}
